//package com.zmn.plat.task.job;
//
//import com.alibaba.fastjson.JSONObject;
//import com.github.ltsopensource.core.domain.Action;
//import com.github.ltsopensource.core.domain.Job;
//import com.github.ltsopensource.tasktracker.Result;
//import com.github.ltsopensource.tasktracker.logger.BizLogger;
//import com.github.ltsopensource.tasktracker.runner.JobContext;
//import com.github.ltsopensource.tasktracker.runner.JobRunner;
//import com.github.ltsopensource.tasktracker.runner.LtsLoggerFactory;
//import com.zmn.common.utils.date.DateUtil;
//import com.zmn.common.utils.number.NumberUtil;
//import com.zmn.common.utils.string.StringUtil;
//import com.zmn.manager.lts.dto.JobDTO;
//import com.zmn.plat.manager.interfaces.search.NewsRepository;
//import com.zmn.plat.model.entity.news.News;
//import com.zmn.plat.model.entity.news.NewsQuery;
//import com.zmn.plat.services.interfaces.news.NewsService;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//
///**
// * News索引任务
// * @author nowind
// * @since 2017/10/26 11:34
// */
//@Component
////@JobRunner4TaskTracker
//public class IndexNewsRunner implements JobRunner {
//    private Logger logger = LoggerFactory.getLogger(IndexNewsRunner.class);
//
//    @Autowired
//    private NewsService newsService;
//    @Autowired
//    private NewsRepository newsRepository;
//
//
//    /**
//     * 启动新的线程去执行具体业务
//     */
//    class newJobThread implements Runnable {
//
//        String params = "";
//
//        newJobThread(String params){
//            this.params = params;
//        }
//
//        @Override
//        public void run() {
//
//            BizLogger bizLogger = LtsLoggerFactory.getBizLogger();
//
//            JobDTO jobDTO = JSONObject.parseObject(this.params, JobDTO.class);
//
//            try {
//
//                logger.info(String.format("[zmn]开始重建索引News,jobTaskId:[%s]", jobDTO.getTaskId()));
//
//                NewsQuery query = new NewsQuery();
//                //query.setStatus(GlobalDict.STATUS_ENABLE);
//                if(!StringUtil.isBlank(jobDTO.getDateTimeBeginOfData())) {
//                    query.setUpdateTimeBegin(DateUtil.getDateStartString(jobDTO.getDateTimeBeginOfData()));
//                }
//                if(!StringUtil.isBlank(jobDTO.getDateTimeEndOfData())) {
//                    query.setUpdateTimeEnd(DateUtil.getDateEndString(jobDTO.getDateTimeEndOfData()));
//                }
//
//                query.setPageSize(500);
//                int totalCount = newsService.countByQuery(query);
//                int pageCount = NumberUtil.getPageCount(totalCount, query.getPageSize());
//
//                for(int index = 1; index <= pageCount; index ++) {
//
//                    query.setPageIndex(index);
//                    List<News> items = newsService.listPageByQuery(query);
//                    if(items == null || items.size() == 0) {
//                        continue;
//                    }
//
//                    newsRepository.updateNews(items);
//                    Thread.sleep(2000L);
//                }
//
//                logger.info(String.format("[zmn]完成重建索引News,jobTaskId:[%s]", jobDTO.getTaskId()));
//
//                // 记录LTS日志
//                bizLogger.info(String.format("重建索引News,jobTaskId:[%s]", jobDTO.getTaskId()));
//
//            } catch (Exception ex) {
//
//                logger.error(String.format("[zmn]重建索引News出错,jobTaskId:[%s],ex:[%s]", jobDTO.getTaskId(), ex.getMessage()));
//            }
//        }
//
//    }
//
//    @Override
//    public Result run(JobContext jobContext) throws Throwable {
//
//        Job job = jobContext.getJob();
//        String params = job.getParam("params");
//
//        try {
//
//            new Thread(new IndexNewsRunner.newJobThread(params)).start();
//            return new Result(Action.EXECUTE_SUCCESS, "重建文章索引成功!");
//
//        } catch (Exception ex) {
//            return new Result(Action.EXECUTE_LATER, ex.getMessage());
//        }
//    }
//
//}
